iT邦幫忙

2026 iThome 鐵人賽

DAY 7
0
自我挑戰組

Java 程式設計與實作:30 天打造個人記帳系統系列 第 7

while 迴圈:讓記帳系統可以持續操作

  • 分享至 

  • xImage
  •  

前一天學習了 for 迴圈,讓程式可以重複顯示多筆消費紀錄,也嘗試利用迴圈計算總支出。今天要學另一種很常見的迴圈:while 迴圈。
這次要把它加入個人記帳系統,讓程式執行之後不會做完一次就直接結束,而是可以讓使用者一直選擇功能,直到選擇「離開」。

什麼是 while 迴圈?
while 的意思可以簡單理解成:
只要條件成立,就一直重複執行。
基本寫法:
while (條件) {
// 重複執行的程式
}
例如:
int number = 1;

while (number <= 5) {
System.out.println(number);
number++;
}
執行結果:
1
2
3
4
5
只要 number <= 5 還是成立,程式就會繼續執行。

while 和 for 有什麼不同?
昨天學的 for 比較適合已經知道要重複幾次的情況。
例如:
for (int i = 0; i < 5; i++) {
System.out.println(i);
}
代表很明確地執行 5 次。
但是記帳系統不一樣。
我們不知道使用者到底想操作幾次,可能新增一筆就離開,也可能操作很多次。
這種情況就很適合使用 while。

今天的小實作:建立記帳系統主選單
先做一個簡單的選單:
===== 個人記帳系統 =====

  1. 新增消費
  2. 查看紀錄
  3. 離開
    使用者可以一直選擇功能,直到輸入 3 才結束程式。

完整程式:
import java.util.Scanner;

public class Main {
public static void main(String[] args) {

    Scanner scanner = new Scanner(System.in);

    boolean running = true;

    while (running) {

        System.out.println();
        System.out.println("===== 個人記帳系統 =====");
        System.out.println("1. 新增消費");
        System.out.println("2. 查看紀錄");
        System.out.println("3. 離開");

        System.out.print("請選擇功能:");
        int choice = scanner.nextInt();
        scanner.nextLine();

        switch (choice) {

            case 1:
                System.out.println();
                System.out.println("你選擇了:新增消費");

                System.out.print("請輸入消費項目:");
                String item = scanner.nextLine();

                System.out.print("請輸入消費金額:");
                int amount = scanner.nextInt();
                scanner.nextLine();

                System.out.println("記帳成功!");
                System.out.println("項目:" + item);
                System.out.println("金額:" + amount + " 元");
                break;

            case 2:
                System.out.println();
                System.out.println("你選擇了:查看紀錄");
                System.out.println("查看紀錄功能之後再完成!");
                break;

            case 3:
                System.out.println();
                System.out.println("已離開個人記帳系統!");
                running = false;
                break;

            default:
                System.out.println("輸入錯誤,請重新選擇!");
        }
    }

    scanner.close();
}

}

執行結果
程式開始後:
===== 個人記帳系統 =====

  1. 新增消費
  2. 查看紀錄
  3. 離開
    請選擇功能:1

如果選擇 1:
你選擇了:新增消費
請輸入消費項目:晚餐
請輸入消費金額:150
記帳成功!
項目:晚餐
金額:150 元

重點是程式不會直接結束,而是再次出現:
===== 個人記帳系統 =====

  1. 新增消費
  2. 查看紀錄
  3. 離開
    請選擇功能:

如果輸入:
3
才會顯示:
已離開個人記帳系統!
然後結束程式。

boolean running 是什麼?
今天的程式中有:
boolean running = true;
boolean 只有兩種值:
true
false
接著:
while (running)
因為一開始 running 是 true,所以程式會一直執行。
當使用者選擇 3:
running = false;
while 的條件就不成立,迴圈也會停止。
這樣就可以控制記帳系統什麼時候結束。

今天遇到的一個問題
目前雖然可以輸入:
晚餐
150

但是重新選擇「查看紀錄」時,還沒有辦法真的看到剛才輸入的資料。
這是因為目前的變數只能暫時保存這次輸入的內容,我們還需要一個可以存放多筆消費資料的方法。
這也是接下來要解決的問題。

Day 7 學習心得
今天學習了 while 迴圈,並第一次做出可以重複操作的記帳系統選單。
和前幾天相比,今天的程式已經比較有「系統」的感覺。使用者可以自己選擇新增消費、查看紀錄或離開,而且執行一個功能之後還可以繼續操作。
目前最大的問題是新增的消費還不能真正保存成多筆紀錄,所以接下來要學習如何把多筆資料存起來,再把「查看紀錄」功能完成。


上一篇
for 迴圈:讓程式重複顯示消費紀錄
系列文
Java 程式設計與實作:30 天打造個人記帳系統7
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言